/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;

import DaoExtendido.DisciplinaExtension;
import Dao.exceptions.IllegalOrphanException;
import Dao.exceptions.NonexistentEntityException;
import Dao.exceptions.PreexistingEntityException;
import Logico.Disciplina;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class ControladorDisciplina {
    DisciplinaExtension daoDisciplina;
    ConnectionFactory conection;

    public ControladorDisciplina() {

        conection = new ConnectionFactory();
        daoDisciplina = new DisciplinaExtension(conection.getFactory());
    }

    public boolean guardar(String nombre, String descripcion, String logo) {

        boolean guardado = false;

        Disciplina disciplina = new Disciplina();
        
        
        disciplina.setNombre(nombre);
        disciplina.setDescripcion(descripcion);
        disciplina.setLogo(logo);

        try {
            daoDisciplina.create(disciplina);
            guardado = true;

        } catch (PreexistingEntityException ex) {
            //JOptionPane.showMessageDialog(null, "Ya existe una Disciplina con la id: " + iddisciplina + ". Por favor inténtelo de nuevo");
        } catch (Exception ex) {
            Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
        }

        return guardado;
    }

    public boolean borrar(int iddisciplina) {

        boolean borrado = false;

        try {

            daoDisciplina.destroy(iddisciplina);
            borrado = true;
        } catch (IllegalOrphanException ex) {
            Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
        }

        return borrado;
    }

    public boolean modificar(int iddisciplina, String nombre, String descripcion, String logo) {

        boolean modificado = false;

        Disciplina disciplinaEncontrada = this.buscar(iddisciplina);

        if (disciplinaEncontrada != null) {

            disciplinaEncontrada.setIddisciplina(iddisciplina);
            disciplinaEncontrada.setNombre(nombre);
            disciplinaEncontrada.setDescripcion(descripcion);
            disciplinaEncontrada.setLogo(logo);


            try {

                daoDisciplina.edit(disciplinaEncontrada);
                modificado = true;
            } catch (IllegalOrphanException ex) {
                Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NonexistentEntityException ex) {
                Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
            } catch (Exception ex) {
                Logger.getLogger(ControladorDisciplina.class.getName()).log(Level.SEVERE, null, ex);
            }

        } else {
            JOptionPane.showMessageDialog(null, "La Disciplina no se encuentra en nuestro sistema.");
        }

        return modificado;
    }

    public Disciplina buscar(int iddisciplina) {

        return daoDisciplina.findDisciplina(iddisciplina);
    }
    
    
    public ArrayList<Disciplina> buscarPorNombre(String nombre) {

        return daoDisciplina.buscarPorNombre(nombre);
    }

    public List<Disciplina> listardisciplinas() {

        return daoDisciplina.findDisciplinaEntities();
    }
    
}
